package com.atdel.demo06;


import java.util.List;
import java.util.Random;

/**
 * @BelongsProject: java_study
 * @BelongsPackage: com.atdel.demo06
 * @Author: Del
 * @CreateTime: 2025-03-04  13:01
 * @Description:
 * Thief类代表了一个小偷角色，具备尝试盗窃目标（如门或汽车）的功能。
 * 该类着重体现了小偷的盗窃行为，包括对具有防盗功能目标的盗窃尝试及盗窃技能的发动。
 * @Version: 1.0
 */
public class Thief{
    public Thief() {

    }
    // 创建一个基于当前时间的随机数生成器，用于决定盗窃尝试的成功与否。
    private Random random = new Random(System.currentTimeMillis());

    /**
     * 尝试盗窃任意可防盗的目标（门或汽车）。
     * 如果目标属于Security类型，则有盗窃成功的可能性；否则，盗窃失败。
     *
     * @param target 目标对象，可以是任何对象，但只有属于Security类型的才会被考虑盗窃。
     * @return 如果盗窃尝试成功，则返回true；否则返回false。
     */
    public boolean steal(Object target) {
        // 判断目标是否为Security类型，是则尝试盗窃。
        if (target instanceof Security) {
            System.out.println("🤫 小偷正在试探防盗系统...");
            return attemptSteal();
        } else {
            // 目标不属于Security类型，宣布安全。
            System.out.println("⚠️ 目标无防盗功能，安全！");
            return false;
        }
    }

    /**
     * 发动盗窃技能，存在一定的失败率。
     * 使用随机数决定盗窃尝试的结果，模拟盗窃行为的不确定性和风险。
     *
     * @return 如果随机数小于0.3（即30%的概率），则表示盗窃成功；否则盗窃失败。
     */
    private boolean attemptSteal() {
        System.out.println("💡 小偷发动盗窃技能...");
        return random.nextDouble() < 0.3; // 30% 成功率（比之前更低更合理）
    }
}
